package api;

/**
 * LinkedList底层链表
 */
public class SimpleLinkedListTests {
    /**
     * 头节点
     */
    private Node first;
    /**
     * 尾节点
     */
    private Node last;
    /**
     * 有效元素个数
     */
    private int size;

    /* 链表中的节点类型 */
    class Node{
        Object element;
        Node pre;
        Node next;
        public Node(Node pre, Object element, Node next) {
            this.pre = pre;
            this.element = element;
            this.next = next;
        }
    }

    /**
     * 头节点添加元素
     * @param element
     */
    public void addFirst(Object element) {
        // 1.创建新节点
        // 1.1 获取头节点
        Node f = first;
        // 1.2 创建新节点
        Node newNode = new Node(null, element, f);
        // 2.设置新节点为first
        first = newNode;
        // 3.设置last节点
        if (f == null) {
            last = newNode;
        } else {
            f.pre = newNode;
        }
        // 4.有效元素个数加1
        size++;

    }
}
